microcad-lang-parse 0.5.0

µcad language syntax lexer and parser
Documentation
---
source: crates/syntax/tests/parser.rs
expression: parse(input)
---
Ok(
    Program {
        span: 0..23,
        statements: StatementList {
            span: 0..23,
            extras: ItemExtras {
                leading: LeadingExtras(
                    [],
                ),
                trailing: TrailingExtras(
                    [],
                ),
            },
            statements: [
                (
                    LocalAssignment(
                        LocalAssignment {
                            span: 0..22,
                            extras: ItemExtras {
                                leading: LeadingExtras(
                                    [],
                                ),
                                trailing: TrailingExtras(
                                    [],
                                ),
                            },
                            attributes: [],
                            name: Identifier {
                                span: 0..1,
                                name: "a",
                            },
                            ty: None,
                            value: Body(
                                Body {
                                    span: 4..22,
                                    statements: StatementList {
                                        span: 5..21,
                                        extras: ItemExtras {
                                            leading: LeadingExtras(
                                                [],
                                            ),
                                            trailing: TrailingExtras(
                                                [],
                                            ),
                                        },
                                        statements: [
                                            (
                                                LocalAssignment(
                                                    LocalAssignment {
                                                        span: 5..14,
                                                        extras: ItemExtras {
                                                            leading: LeadingExtras(
                                                                [],
                                                            ),
                                                            trailing: TrailingExtras(
                                                                [],
                                                            ),
                                                        },
                                                        attributes: [],
                                                        name: Identifier {
                                                            span: 5..6,
                                                            name: "a",
                                                        },
                                                        ty: None,
                                                        value: BinaryOperation(
                                                            BinaryOperation {
                                                                span: 9..14,
                                                                lhs: Literal(
                                                                    Literal {
                                                                        span: 9..11,
                                                                        extras: ItemExtras {
                                                                            leading: LeadingExtras(
                                                                                [],
                                                                            ),
                                                                            trailing: TrailingExtras(
                                                                                [
                                                                                    Whitespace(
                                                                                        " ",
                                                                                    ),
                                                                                ],
                                                                            ),
                                                                        },
                                                                        literal: Integer(
                                                                            IntegerLiteral {
                                                                                span: 9..10,
                                                                                value: 1,
                                                                                raw: "1",
                                                                            },
                                                                        ),
                                                                    },
                                                                ),
                                                                operation: BinaryOperator {
                                                                    span: 11..12,
                                                                    operation: Add,
                                                                },
                                                                rhs: Literal(
                                                                    Literal {
                                                                        span: 13..14,
                                                                        extras: ItemExtras {
                                                                            leading: LeadingExtras(
                                                                                [],
                                                                            ),
                                                                            trailing: TrailingExtras(
                                                                                [],
                                                                            ),
                                                                        },
                                                                        literal: Integer(
                                                                            IntegerLiteral {
                                                                                span: 13..14,
                                                                                value: 2,
                                                                                raw: "2",
                                                                            },
                                                                        ),
                                                                    },
                                                                ),
                                                            },
                                                        ),
                                                    },
                                                ),
                                                TrailingExtras(
                                                    [
                                                        Whitespace(
                                                            " ",
                                                        ),
                                                    ],
                                                ),
                                            ),
                                        ],
                                        tail: Some(
                                            ExpressionStatement {
                                                span: 16..21,
                                                extras: ItemExtras {
                                                    leading: LeadingExtras(
                                                        [],
                                                    ),
                                                    trailing: TrailingExtras(
                                                        [],
                                                    ),
                                                },
                                                attributes: [],
                                                expression: BinaryOperation(
                                                    BinaryOperation {
                                                        span: 16..21,
                                                        lhs: QualifiedName(
                                                            QualifiedName {
                                                                span: 16..17,
                                                                extras: ItemExtras {
                                                                    leading: LeadingExtras(
                                                                        [],
                                                                    ),
                                                                    trailing: TrailingExtras(
                                                                        [
                                                                            Whitespace(
                                                                                " ",
                                                                            ),
                                                                        ],
                                                                    ),
                                                                },
                                                                parts: [
                                                                    Identifier {
                                                                        span: 16..17,
                                                                        name: "a",
                                                                    },
                                                                ],
                                                            },
                                                        ),
                                                        operation: BinaryOperator {
                                                            span: 18..19,
                                                            operation: Multiply,
                                                        },
                                                        rhs: Literal(
                                                            Literal {
                                                                span: 20..21,
                                                                extras: ItemExtras {
                                                                    leading: LeadingExtras(
                                                                        [],
                                                                    ),
                                                                    trailing: TrailingExtras(
                                                                        [],
                                                                    ),
                                                                },
                                                                literal: Integer(
                                                                    IntegerLiteral {
                                                                        span: 20..21,
                                                                        value: 3,
                                                                        raw: "3",
                                                                    },
                                                                ),
                                                            },
                                                        ),
                                                    },
                                                ),
                                            },
                                        ),
                                    },
                                },
                            ),
                        },
                    ),
                    TrailingExtras(
                        [],
                    ),
                ),
            ],
            tail: None,
        },
    },
)